<?php

require_once(BaseConfig::LoadClass('objeto_base.class.php'    ));
require_once(BaseConfig::LoadClass('filtro.class.php'         ));
require_once(BaseConfig::LoadClass('abc.class.php'            ));
require_once(BaseConfig::LoadClass('clientes.class.php'       ));
require_once(BaseConfig::LoadClass('inventario.class.php'     ));
require_once(BaseConfig::LoadClass('productos.class.php'      ));
require_once(BaseConfig::LoadClass('trabajadores.class.php'   ));
require_once(BaseConfig::LoadClass('plugin_abc.class.php'     ));
require_once(BaseConfig::LoadClass('doc_pdf.class.php'        ));

class PDF_OrdenTrabajo extends PDFDoc {
  /**
   * Objeto con la orden de trabajo a imprimir
   * 
   * @var OrdenTrabajo
   */
  var $__oOrdenTrabajo;
  
  /**
   * Color de los bordes
   * @var int
   */
  var $__intColorBordes;
  
  /**
   * Color de los textos estaticos de la cabecera
   * @var int
   */
  var $__intColorTextosEsta;
  
  /**
   * Color de los textos dinamicos (Los que vienen de la orden de trabajo)
   * @var int
   */
  var $__intColorTextosDin;
  
  function PDF_OrdenTrabajo($oOrdenTrabajo) {
    parent::PDFDoc();
    
    $this->oTCPDF->SetAuthor('NICRA');
    $this->__intBordesPrueba = 0;
    $this->__oOrdenTrabajo   = $oOrdenTrabajo;
    
    $this->__intColorTextosEsta =   0;
    $this->__intColorTextosDin  = 127;
    
    // X = 10, Y = 8.5, W = 190 (+X = 200)
  }
  
  function CrearInteriorPagina() {
    // Bordes redondos que contienen toda la info
    $this->oTCPDF->RoundedRect(10, 50, 190, 194, 2);
    
    // Info del cliente
    $this->oTCPDF->Rect( 12,  52, 140, 4); // Cliente
    $this->oTCPDF->Rect( 12,  56, 140, 4); // Atencion A
    $this->oTCPDF->Rect( 12,  60, 140, 4); // Direccion
    
    $this->oTCPDF->Rect( 12,  66, 110, 4); // Tel - Fax
    $this->oTCPDF->Rect( 12,  70, 110, 4); // Informando Que
    $this->oTCPDF->Rect( 12,  74, 110, 4); // Fecha
    
    $this->oTCPDF->Rect( 12,  80, 110, 4); // H Entrada
    $this->oTCPDF->Rect( 12,  84, 110, 4); // H Salida
    $this->oTCPDF->Rect( 12,  88, 110, 4); // Fallas Detectadas
    $this->oTCPDF->Rect( 12,  92, 110, 4); //
    $this->oTCPDF->Rect( 12,  96, 110, 4); //
    $this->oTCPDF->Rect( 12, 100, 110, 4); //
    $this->oTCPDF->Rect( 12, 104, 110, 4); //
    $this->oTCPDF->Rect( 12, 108, 110, 4); //
    $this->oTCPDF->Rect( 12, 112, 110, 4); //
    
    $this->oTCPDF->Rect(124,  66,  74, 4); // Datos del Equipo
    $this->oTCPDF->Rect(124,  70,  74, 4); // Marca
    $this->oTCPDF->Rect(124,  74,  74, 4); // Modelo
    $this->oTCPDF->Rect(124,  78,  74, 4); // Serie
    $this->oTCPDF->Rect(124,  82,  74, 4); // Horas
    $this->oTCPDF->Rect(124,  86,  74, 4); // Fecha Puesta en Servicio
    
    $this->oTCPDF->Rect(124,  92,  74, 4); // Mano de Obra
    $this->oTCPDF->Rect(124,  96,  74, 4); //
    $this->oTCPDF->Rect(124, 100,  74, 4); // Vo. Bo. del Cliente
    $this->oTCPDF->Rect(124, 104,  74, 8); // 
    $this->oTCPDF->Rect(124, 112,  74, 4); // Nombre y Firma
    
    // Trabajos Efectuados
    $this->oTCPDF->Rect( 12, 118, 186, 4); //
    for($i = 0; $i < 11; $i++) {
      $this->oTCPDF->Rect( 12, 122 + ($i * 4),  10, 4); //
      $this->oTCPDF->Rect( 22, 122 + ($i * 4), 136, 4); //
      $this->oTCPDF->Rect(158, 122 + ($i * 4),  20, 4); //
      $this->oTCPDF->Rect(178, 122 + ($i * 4),  20, 4); //
    }
    
    $this->oTCPDF->Rect( 12, 168, 186, 4); // Recomendaciones sobre otros trabajos
    $this->oTCPDF->Rect( 12, 172, 186, 4); //
    $this->oTCPDF->Rect( 12, 176, 186, 4); //
    $this->oTCPDF->Rect( 12, 180, 186, 4); //
    $this->oTCPDF->Rect( 12, 184, 186, 4); //
    
    $this->oTCPDF->Rect( 12, 190, 140, 4); // Refacciones Usadas //
    $this->oTCPDF->Rect( 12, 194,  10, 4); // Titulos
    $this->oTCPDF->Rect( 22, 194,  90, 4); // 
    $this->oTCPDF->Rect(112, 194,  20, 4); // 
    $this->oTCPDF->Rect(132, 194,  20, 4); //
    for($i = 1; $i < 12; $i++) {
      $this->oTCPDF->Rect( 12, 194 + ($i * 4),  10, 4); // Ref $i
      $this->oTCPDF->Rect( 22, 194 + ($i * 4),  90, 4); // 
      $this->oTCPDF->Rect(112, 194 + ($i * 4),  20, 4); // 
      $this->oTCPDF->Rect(132, 194 + ($i * 4),  20, 4); // 
    }
    
    
    $this->oTCPDF->Rect(154, 190,  44, 6); // Facturese Por
    $this->oTCPDF->Rect(154, 198,  20, 6); // Refacciones
    $this->oTCPDF->Rect(174, 198,  24, 6); // 
    $this->oTCPDF->Rect(154, 204,  20, 6); // Mano de Obra
    $this->oTCPDF->Rect(174, 204,  24, 6); // 
    $this->oTCPDF->Rect(154, 210,  20, 6); // Varios
    $this->oTCPDF->Rect(174, 210,  24, 6); // 
    $this->oTCPDF->Rect(154, 216,  20, 6); // Foraneos
    $this->oTCPDF->Rect(174, 216,  24, 6); // 
    
    $this->oTCPDF->Rect(154, 224,  20, 6); // Mano de Obra
    $this->oTCPDF->Rect(174, 224,  24, 6); // 
    $this->oTCPDF->Rect(154, 230,  20, 6); // Varios
    $this->oTCPDF->Rect(174, 230,  24, 6); // 
    $this->oTCPDF->Rect(154, 236,  20, 6); // Foraneos
    $this->oTCPDF->Rect(174, 236,  24, 6); // 
  }
  
  function CrearLabelsInterior() {
    // Info del cliente
    $this->PonerTexto(154,  52,  44, 6, 'ORDEN DE TRABAJO'                    , "L", 11, "B" );
    $this->PonerTexto(154,  58,  44, 6, 'No.'                                 , "L", 11, "B" );
    
    $this->PonerTexto( 12,  52, 140, 4, 'Cliente'                             , "" ,  7, "" );
    $this->PonerTexto( 12,  56, 140, 4, 'Atencion A'                          , "" ,  7, "" );
    $this->PonerTexto( 12,  60, 140, 4, 'Direccion'                           , "" ,  7, "" );
    
    $this->PonerTexto( 12,  66, 110, 4, 'Tel - Fax'                           , "" ,  7, "" );
    $this->PonerTexto( 12,  70, 110, 4, 'Informando Que'                      , "" ,  7, "" );
    $this->PonerTexto( 12,  74, 110, 4, 'Fecha'                               , "" ,  7, "" );
    
    $this->PonerTexto( 12,  80, 110, 4, 'H Entrada'                           , "" ,  7, "" );
    $this->PonerTexto( 12,  84, 110, 4, 'H Salida'                            , "" ,  7, "" );
    $this->PonerTexto( 12,  88, 110, 4, 'Fallas Detectadas'                   , "C",  8, "B");
    
    $this->PonerTexto(124,  66,  74, 4, 'Datos del Equipo'                    , "" ,  7, "" );
    $this->PonerTexto(124,  70,  74, 4, 'Marca'                               , "" ,  7, "" );
    $this->PonerTexto(124,  74,  74, 4, 'Modelo'                              , "" ,  7, "" );
    $this->PonerTexto(124,  78,  74, 4, 'Serie'                               , "" ,  7, "" );
    $this->PonerTexto(124,  82,  74, 4, 'Horas'                               , "" ,  7, "" );
    $this->PonerTexto(124,  86,  74, 4, 'Fecha Puesta en Servicio'            , "" ,  7, "" );
    
    $this->PonerTexto(124,  92,  74, 4, 'Mano de Obra'                        , "" ,  7, "" );
    $this->PonerTexto(124, 100,  74, 4, 'Vo. Bo. del Cliente'                 , "C",  7, "" );
    $this->PonerTexto(124, 112,  74, 4, 'Nombre y Firma'                      , "C",  7, "" );
    
    $this->PonerTexto( 12, 118, 186, 4, 'Trabajos Efectuados'                 , "C",  8, "B");
    $this->PonerTexto( 12, 122,  10, 4, 'Cant'                                , "C",  7, "" );
    $this->PonerTexto( 22, 122, 136, 4, 'Descripción'                         , "C",  7, "" );
    $this->PonerTexto(158, 122,  20, 4, 'Precio'                              , "C",  7, "" );
    $this->PonerTexto(178, 122,  20, 4, 'Total'                               , "C",  7, "" );
    
    $this->PonerTexto( 12, 168, 186, 4, 'Recomendaciones sobre otros trabajos', "C",  8, "B");
    
    $this->PonerTexto( 12, 190, 140, 4, 'Refacciones Usadas'                  , "C",  8, "B");
    $this->PonerTexto( 12, 194,  10, 4, 'Cant'                                , "C",  7, "" );
    $this->PonerTexto( 22, 194,  90, 4, 'Descripción'                         , "C",  7, "" );
    $this->PonerTexto(112, 194,  20, 4, 'Precio'                              , "C",  7, "" );
    $this->PonerTexto(132, 194,  20, 4, 'Total'                               , "C",  7, "" );
    
    $this->PonerTexto(154, 190,  44, 6, 'Facturese Por'                       , "C", 10, "B");
    $this->PonerTexto(154, 198,  20, 6, 'Refacciones'                         , "" ,  7, "" );
    $this->PonerTexto(154, 204,  20, 6, 'Mano de Obra'                        , "" ,  7, "" );
    $this->PonerTexto(154, 210,  20, 6, 'Varios'                              , "" ,  7, "" );
    $this->PonerTexto(154, 216,  20, 6, 'Foraneos'                            , "" ,  7, "" );
    
    $this->PonerTexto(154, 224,  20, 6, 'Subtotal'                            , "" ,  8, "" );
    $this->PonerTexto(154, 230,  20, 6, 'I.V.A.'                              , "" ,  8, "" );
    $this->PonerTexto(154, 236,  20, 6, 'TOTAL'                               , "" , 10, "B");
  }
  
  function ColocarInfoOrdenTrabajo() {
    
    $this->oTCPDF->SetTextColor(250, 0, 0);
    $this->PonerTexto(154,  58,  44, 6, sprintf("%08d", $this->__oOrdenTrabajo->intIdOrdenTrabajo), "R", 11, "B" );
    
    $this->oTCPDF->SetTextColor($this->__intColorTextosDin);
    
    $this->PonerTexto( 32,  52, 120, 4, $this->__oOrdenTrabajo->__oCliente->strRFC      . " - " . $this->__oOrdenTrabajo->__oCliente->strRazonSocial, "", 7, "");
    $this->PonerTexto( 32,  56, 120, 4, $this->__oOrdenTrabajo->__oCliente->strAtencionA);
    $this->PonerTexto( 32,  60, 120, 4, $this->__oOrdenTrabajo->__oCliente->strDireccion);
    
    $this->PonerTexto( 32,  66,  90, 4, $this->__oOrdenTrabajo->__oCliente->strTelefono . " - " . $this->__oOrdenTrabajo->__oCliente->strFax        );
    $this->PonerTexto( 32,  70,  90, 4, $this->__oOrdenTrabajo->strInformando);
    $this->PonerTexto( 32,  74,  90, 4, $this->__oOrdenTrabajo->strFecha     );
    
    $this->PonerTexto( 32,  80,  90, 4, $this->__oOrdenTrabajo->strHEntrada  );
    $this->PonerTexto( 32,  84,  90, 4, $this->__oOrdenTrabajo->strHSalida   );
    
    $this->PonerTexto( 12,  92, 110, 4, Variables::SepararCadenaLarga($this->__oOrdenTrabajo->strFallasDet, 85, 0));
    $this->PonerTexto( 12,  96, 110, 4, Variables::SepararCadenaLarga($this->__oOrdenTrabajo->strFallasDet, 85, 1));
    $this->PonerTexto( 12, 100, 110, 4, Variables::SepararCadenaLarga($this->__oOrdenTrabajo->strFallasDet, 85, 2));
    $this->PonerTexto( 12, 104, 110, 4, Variables::SepararCadenaLarga($this->__oOrdenTrabajo->strFallasDet, 85, 3));
    $this->PonerTexto( 12, 108, 110, 4, Variables::SepararCadenaLarga($this->__oOrdenTrabajo->strFallasDet, 85, 4));
    $this->PonerTexto( 12, 112, 110, 4, Variables::SepararCadenaLarga($this->__oOrdenTrabajo->strFallasDet, 85, 5));
    
    $this->PonerTexto(144,  66,  54, 4, $this->__oOrdenTrabajo->__oEquipo->strNoEco );
    $this->PonerTexto(144,  70,  54, 4, $this->__oOrdenTrabajo->__oEquipo->strMarca );
    $this->PonerTexto(144,  74,  54, 4, $this->__oOrdenTrabajo->__oEquipo->strModelo);
    $this->PonerTexto(144,  78,  54, 4, $this->__oOrdenTrabajo->__oEquipo->strSerie );
    $this->PonerTexto(144,  82,  54, 4, $this->__oOrdenTrabajo->strHoras  );
    $this->PonerTexto(164,  86,  34, 4, $this->__oOrdenTrabajo->strFechaPS);
    
    $this->PonerTexto(124,  96,  74, 4, $this->__oOrdenTrabajo->__oTrabajador->strNombre);
    
    $arrTrabEf = unserialize($this->__oOrdenTrabajo->strTrabajosEfec);
    for($i = 0; $i < 10; $i++) {
      if($arrTrabEf["cant"][$i] || $arrTrabEf["desc"][$i] || $arrTrabEf["prec"][$i]) {
        $this->PonerTexto( 12, 126 + ($i * 4),  10, 4, $arrTrabEf["cant"][$i], "R");
        $this->PonerTexto( 22, 126 + ($i * 4), 136, 4, $arrTrabEf["desc"][$i]); // 
        $this->PonerTexto(158, 126 + ($i * 4),  20, 4, Variables::FormatoCurrency($arrTrabEf["prec"][$i]), "R");
        $this->PonerTexto(178, 126 + ($i * 4),  20, 4, Variables::FormatoCurrency($arrTrabEf["cant"][$i] * $arrTrabEf["prec"][$i]), "R");
      }
    }
    
    $this->PonerTexto( 12, 172, 186, 4, Variables::SepararCadenaLarga($this->__oOrdenTrabajo->strRecomendacion, 150, 0));
    $this->PonerTexto( 12, 176, 186, 4, Variables::SepararCadenaLarga($this->__oOrdenTrabajo->strRecomendacion, 150, 1));
    $this->PonerTexto( 12, 180, 186, 4, Variables::SepararCadenaLarga($this->__oOrdenTrabajo->strRecomendacion, 150, 2));
    $this->PonerTexto( 12, 184, 186, 4, Variables::SepararCadenaLarga($this->__oOrdenTrabajo->strRecomendacion, 150, 3));
    
    $fltTotalRef = 0;
    for($i = 1; $i < 12; $i++) {
      if($this->__oOrdenTrabajo->__arrRefacciones[$i]->intIdProducto) {
        eval('$intCantidad = $this->__oOrdenTrabajo->intCantRef' . $i . ';');
        eval('$fltPrecio   = round($this->__oOrdenTrabajo->fltPrecRef' . $i . ', 2);');
        $fltImporte = round($intCantidad * $fltPrecio, 2);
        $this->PonerTexto( 12, 194 + ($i * 4),  10, 4, $intCantidad, "R");
        $this->PonerTexto( 22, 194 + ($i * 4),  90, 4, $this->__oOrdenTrabajo->__arrRefacciones[$i]->strCodigo . " " . $this->__oOrdenTrabajo->__arrRefacciones[$i]->strNombre); // 
        $this->PonerTexto(112, 194 + ($i * 4),  20, 4, Variables::FormatoCurrency($fltPrecio ), "R");
        $this->PonerTexto(132, 194 + ($i * 4),  20, 4, Variables::FormatoCurrency($fltImporte), "R");
        
        $fltTotalRef += $fltImporte;
      }
    }
    
    $this->PonerTexto(174, 198,  24, 6, Variables::FormatoCurrency($fltTotalRef), "R", 8, "B");
    $this->PonerTexto(174, 204,  24, 6, Variables::FormatoCurrency($this->__oOrdenTrabajo->fltManoObra), "R");
    $this->PonerTexto(174, 210,  24, 6, Variables::FormatoCurrency($this->__oOrdenTrabajo->fltVarios  ), "R");
    $this->PonerTexto(174, 216,  24, 6, Variables::FormatoCurrency($this->__oOrdenTrabajo->fltForaneos), "R");
    
    $fltSubtotal = $fltTotalRef + $this->__oOrdenTrabajo->fltManoObra + $this->__oOrdenTrabajo->fltVarios + $this->__oOrdenTrabajo->fltForaneos;
    $fltIVA      = round($fltSubtotal * 0.16, 2);
    $fltTotal    = $fltSubtotal + $fltIVA;
    
    $this->PonerTexto(174, 224,  24, 6, Variables::FormatoCurrency($fltSubtotal), "R");
    $this->PonerTexto(174, 230,  24, 6, Variables::FormatoCurrency($fltIVA     ), "R");
    $this->PonerTexto(174, 236,  24, 6, Variables::FormatoCurrency($fltTotal   ), "R", 10, "B");
  }
  
  function CreateNewPage() {
    global $strGPath;
    
    // Aqui se pone la estructura en blanco
    
    $this->oTCPDF->setPrintHeader(false);
    $this->oTCPDF->setPrintFooter(false);
    
    $this->oTCPDF->AddPage();
    
    // Logo
    $this->oTCPDF->Image("$strGPath/images/logo_small.png", 10, 8.5, 30, '');
    
    // Imagen Montacargas
    $this->oTCPDF->Image("$strGPath/images/monta.jpg", 170, 8.5, 30, '');
    
    $this->oTCPDF->SetTextColor($this->__intColorTextosEsta);
    
    // Presentar el encabezado
    $this->PonerTexto( 45, 8.5, 120, 6, "MONTACARGAS M & H S.A. DE C.V."                                           , "C", 18, "B");
    $this->PonerTexto( 45, 16, 120, 4, "VENTA, RENTA, SERVICIO, REPARACIÓN Y MANTENIMIENTO DE PATINES HIDRAHULICOS", "C",  7, "" );
    $this->PonerTexto( 45, 20, 120, 4, "MONTACARGAS, BATERÍAS, CARGADORES Y REFACCIONES EN GENERAL"                , "C",  7, "" );
    $this->PonerTexto( 45, 26, 120, 4, "www.maquinariaehidrahulicos.com / www.montacargasmyh.com"                  , "C", 10, "B");
    
    // Planta
    $this->PonerTexto( 10, 34, 45, 4, "PLANTA"                     , "C", 10, "B");
    $this->PonerTexto( 10, 39, 45, 3, "FANNY SCHILLER #97"         , "C",  7, "" );
    $this->PonerTexto( 10, 42, 45, 3, "COL. LA FORESTAL"           , "C",  7, "" );
    $this->PonerTexto( 10, 45, 45, 3, "G.A.M., 07140, MÉXICO, D.F.", "C",  7, "" );
    
    // TELS DF
    $this->PonerTexto( 55, 34, 45, 4, "TELS. 5606-1344", "C", 10, "B");
    $this->PonerTexto( 55, 39, 45, 4, "2227-0019"      , "C", 10, "B");
    $this->PonerTexto( 55, 44, 45, 4, "5306-1443"      , "C", 10, "B");
    
    // Sucursal DF
    $this->PonerTexto(100, 34, 45, 4, "Sucursal D.F."                    , "C", 10, "B");
    $this->PonerTexto( 99, 39, 48, 3, "AV. MIGUEL LERDO DE TEJADA LT. 19", "C", 7, "" );
    $this->PonerTexto(100, 42, 45, 3, "COL. EL TEPETATAL"                , "C", 7, "" );
    $this->PonerTexto(100, 45, 45, 3, "G.A.M., 07130, MÉXICO, D.F."      , "C", 7, "" );
    
    // TELS QUERETARO
    $this->PonerTexto(145, 34, 45, 4, "Sucursal Querétaro:", "C", 10, "B");
    $this->PonerTexto(145, 39, 45, 4, "01(442)-291-2218"   , "C", 10, "B");
    $this->PonerTexto(145, 44, 45, 4, "01(442)-291-2090"   , "C", 10, "B");
    
    // Mostrar la caja que contendrá toda la info
  }
  
  function DoRender() {
    $this->CreateNewPage          ();
    $this->CrearInteriorPagina    ();
    $this->CrearLabelsInterior    ();
    $this->ColocarInfoOrdenTrabajo();
  }
  
  function Guardar($strNombreArchivo = "", $strTipoGuardado = "I") {
    global $strGPath;
    global $strGUploads;
    $strRandName = "orden_trabajo_" . sprintf("%08d", $this->__oOrdenTrabajo->intIdOrdenTrabajo) . ".pdf";
    $strPathRel = "$strGUploads/ordenes/$strRandName";
    @unlink("$strGPath/$strPathRel");
    parent::Guardar("$strGPath/$strPathRel", "F");
    return $strPathRel;
  }
}

class Plugin_OrdenTrabajo_MuestraLigaEdicion extends PluginABC {
  function Plugin_OrdenTrabajo_MuestraLigaEdicion() {
    $this->strNombreBoton   = "Editar";
    $this->bolLlevaDosPasos = false   ;
  }
  
  function EjecutarPlugin() {
    header("Location:index.php?option=orden_trabajo&id=" . $this->__oObjetoAplicado->intIdOrdenTrabajo);
  }
}

class Plugin_OrdenTrabajo_CambioEstatus2 extends PluginABC {
  function Plugin_OrdenTrabajo_CambioEstatus2() {
    $this->strNombreBoton   = "Orden realizada";
    $this->bolLlevaDosPasos = false    ;
  }
  
  function EjecutarPlugin() {
    $oConecta = new Conecta();
    $oConecta->Consulta("UPDATE ordenes_trabajo SET id_estatus = 2 WHERE id_orden_trabajo = " . $this->__oObjetoAplicado->intIdOrdenTrabajo);
    
    header("Location:index.php?option=abc_ordenes_trabajo");
    die;
  }
}

class OrdenTrabajo extends ObjetoBase {
  var $intIdOrdenTrabajo;
  var $intIdCliente     ;
  var $intIdEquipo      ;
  var $intIdTrabajador  ;
  var $intIdSucursal    ;
  var $intIdEstatus     ;
  var $strInformando    ;
  var $strFecha         ;
  var $strHoras         ;
  var $strFechaPS       ;
  var $strHEntrada      ;
  var $strHSalida       ;
  var $strFallasDet     ;
  var $strTrabajosEfec  ;
  var $strRecomendacion ;
  
  var $intIdIdRef1      ;  var $intCantRef1      ;  var $fltPrecRef1      ;  var $fltIVARef1       ;
  var $intIdIdRef2      ;  var $intCantRef2      ;  var $fltPrecRef2      ;  var $fltIVARef2       ;
  var $intIdIdRef3      ;  var $intCantRef3      ;  var $fltPrecRef3      ;  var $fltIVARef3       ;
  var $intIdIdRef4      ;  var $intCantRef4      ;  var $fltPrecRef4      ;  var $fltIVARef4       ;
  var $intIdIdRef5      ;  var $intCantRef5      ;  var $fltPrecRef5      ;  var $fltIVARef5       ;
  var $intIdIdRef6      ;  var $intCantRef6      ;  var $fltPrecRef6      ;  var $fltIVARef6       ;
  var $intIdIdRef7      ;  var $intCantRef7      ;  var $fltPrecRef7      ;  var $fltIVARef7       ;
  var $intIdIdRef8      ;  var $intCantRef8      ;  var $fltPrecRef8      ;  var $fltIVARef8       ;
  var $intIdIdRef9      ;  var $intCantRef9      ;  var $fltPrecRef9      ;  var $fltIVARef9       ;
  var $intIdIdRef10     ;  var $intCantRef10     ;  var $fltPrecRef10     ;  var $fltIVARef10      ;
  var $intIdIdRef11     ;  var $intCantRef11     ;  var $fltPrecRef11     ;  var $fltIVARef11      ;
  
  var $fltManoObra      ;
  var $fltVarios        ;
  var $fltForaneos      ;
  var $strUrlPdf        ;
  
  /**
   * @var Cliente
   */
  var $__oCliente      ;
  /**
   * @var Inventario
   */
  var $__oEquipo       ;
  /**
   * @var Trabajador
   */
  var $__oTrabajador   ;
  /**
   * @var Producto
   */
  var $__arrRefacciones;
  
  function OrdenTrabajo($intIdOrdenTrabajo = 0) {
    $arrMapaDatos = Array();
    $arrMapaDatos['id_orden_trabajo' ] = Array('NombreVariable' => 'intIdOrdenTrabajo', 'TipoVariable' => 'I');
    $arrMapaDatos['id_cliente'       ] = Array('NombreVariable' => 'intIdCliente'     , 'TipoVariable' => 'N');
    $arrMapaDatos['id_equipo'        ] = Array('NombreVariable' => 'intIdEquipo'      , 'TipoVariable' => 'N');
    $arrMapaDatos['id_trabajador'    ] = Array('NombreVariable' => 'intIdTrabajador'  , 'TipoVariable' => 'N');
    $arrMapaDatos['id_sucursal'      ] = Array('NombreVariable' => 'intIdSucursal'    , 'TipoVariable' => 'N');
    $arrMapaDatos['id_estatus'       ] = Array('NombreVariable' => 'intIdEstatus'     , 'TipoVariable' => 'N');
    $arrMapaDatos['informando'       ] = Array('NombreVariable' => 'strInformando'    , 'TipoVariable' => 'S');
    $arrMapaDatos['fecha'            ] = Array('NombreVariable' => 'strFecha'         , 'TipoVariable' => 'S');
    $arrMapaDatos['horas'            ] = Array('NombreVariable' => 'strHoras'         , 'TipoVariable' => 'S');
    $arrMapaDatos['fecha_ps'         ] = Array('NombreVariable' => 'strFechaPS'       , 'TipoVariable' => 'S');
    $arrMapaDatos['h_entrada'        ] = Array('NombreVariable' => 'strHEntrada'      , 'TipoVariable' => 'S');
    $arrMapaDatos['h_salida'         ] = Array('NombreVariable' => 'strHSalida'       , 'TipoVariable' => 'S');
    $arrMapaDatos['fallas_detectadas'] = Array('NombreVariable' => 'strFallasDet'     , 'TipoVariable' => 'S');
    $arrMapaDatos['trabajos_efec'    ] = Array('NombreVariable' => 'strTrabajosEfec'  , 'TipoVariable' => 'S');
    $arrMapaDatos['recomendaciones'  ] = Array('NombreVariable' => 'strRecomendacion' , 'TipoVariable' => 'S');
    
    $arrMapaDatos['ref_id_1'         ] = Array('NombreVariable' => 'intIdIdRef1'      , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_cant_1'       ] = Array('NombreVariable' => 'intCantRef1'      , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_prec_1'       ] = Array('NombreVariable' => 'fltPrecRef1'      , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_iva_1'        ] = Array('NombreVariable' => 'fltIVARef1'       , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_id_2'         ] = Array('NombreVariable' => 'intIdIdRef2'      , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_cant_2'       ] = Array('NombreVariable' => 'intCantRef2'      , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_prec_2'       ] = Array('NombreVariable' => 'fltPrecRef2'      , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_iva_2'        ] = Array('NombreVariable' => 'fltIVARef2'       , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_id_3'         ] = Array('NombreVariable' => 'intIdIdRef3'      , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_cant_3'       ] = Array('NombreVariable' => 'intCantRef3'      , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_prec_3'       ] = Array('NombreVariable' => 'fltPrecRef3'      , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_iva_3'        ] = Array('NombreVariable' => 'fltIVARef3'       , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_id_4'         ] = Array('NombreVariable' => 'intIdIdRef4'      , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_cant_4'       ] = Array('NombreVariable' => 'intCantRef4'      , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_prec_4'       ] = Array('NombreVariable' => 'fltPrecRef4'      , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_iva_4'        ] = Array('NombreVariable' => 'fltIVARef4'       , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_id_5'         ] = Array('NombreVariable' => 'intIdIdRef5'      , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_cant_5'       ] = Array('NombreVariable' => 'intCantRef5'      , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_prec_5'       ] = Array('NombreVariable' => 'fltPrecRef5'      , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_iva_5'        ] = Array('NombreVariable' => 'fltIVARef5'       , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_id_6'         ] = Array('NombreVariable' => 'intIdIdRef6'      , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_cant_6'       ] = Array('NombreVariable' => 'intCantRef6'      , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_prec_6'       ] = Array('NombreVariable' => 'fltPrecRef6'      , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_iva_6'        ] = Array('NombreVariable' => 'fltIVARef6'       , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_id_7'         ] = Array('NombreVariable' => 'intIdIdRef7'      , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_cant_7'       ] = Array('NombreVariable' => 'intCantRef7'      , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_prec_7'       ] = Array('NombreVariable' => 'fltPrecRef7'      , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_iva_7'        ] = Array('NombreVariable' => 'fltIVARef7'       , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_id_8'         ] = Array('NombreVariable' => 'intIdIdRef8'      , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_cant_8'       ] = Array('NombreVariable' => 'intCantRef8'      , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_prec_8'       ] = Array('NombreVariable' => 'fltPrecRef8'      , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_iva_8'        ] = Array('NombreVariable' => 'fltIVARef8'       , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_id_9'         ] = Array('NombreVariable' => 'intIdIdRef9'      , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_cant_9'       ] = Array('NombreVariable' => 'intCantRef9'      , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_prec_9'       ] = Array('NombreVariable' => 'fltPrecRef9'      , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_iva_9'        ] = Array('NombreVariable' => 'fltIVARef9'       , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_id_10'        ] = Array('NombreVariable' => 'intIdIdRef10'     , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_cant_10'      ] = Array('NombreVariable' => 'intCantRef10'     , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_prec_10'      ] = Array('NombreVariable' => 'fltPrecRef10'     , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_iva_10'       ] = Array('NombreVariable' => 'fltIVARef10'      , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_id_11'        ] = Array('NombreVariable' => 'intIdIdRef11'     , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_cant_11'      ] = Array('NombreVariable' => 'intCantRef11'     , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_prec_11'      ] = Array('NombreVariable' => 'fltPrecRef11'     , 'TipoVariable' => 'N');
    $arrMapaDatos['ref_iva_11'       ] = Array('NombreVariable' => 'fltIVARef11'      , 'TipoVariable' => 'N');
    
    $arrMapaDatos['mano_obra'        ] = Array('NombreVariable' => 'fltManoObra'      , 'TipoVariable' => 'N');
    $arrMapaDatos['varios'           ] = Array('NombreVariable' => 'fltVarios'        , 'TipoVariable' => 'N');
    $arrMapaDatos['foraneos'         ] = Array('NombreVariable' => 'fltForaneos'      , 'TipoVariable' => 'N');
    $arrMapaDatos['url_pdf'          ] = Array('NombreVariable' => 'strUrlPdf'        , 'TipoVariable' => 'S');
    
    $this->__ArmarDatosPrivados('ordenes_trabajo', $arrMapaDatos, 'id_orden_trabajo');
    $this->SeleccionarPorIndice($intIdOrdenTrabajo);
  }
  
  function MostrarListaRapida() {
    $oTemplate      = new Template();
    $oConecta       = new Conecta();
    
    if(Variables::GetOption('paso') == '2') {
      foreach(Variables::GetOption('cerrar') as $intIdOrden) {
        $strConsulta = "UPDATE ordenes_trabajo SET id_estatus = 2 WHERE id_orden_trabajo = $intIdOrden";
        $oConecta->Consulta($strConsulta);
      }
      header("Location: index.php?option=lista_ordenes_small");
      die;
    }
    $intPagina      = Variables::GetOption('pagina' ) - 0;
    $intSoloEstatus = Variables::GetOption('estatus') - 0;
    
    // Ver cuantos elementos existen
    $strConsulta = "SELECT COUNT(*) AS cuantos FROM ordenes_trabajo ";
    if($intSoloEstatus) {
      $strConsulta .= "WHERE id_estatus = $intSoloEstatus ";
    }
    $oConecta->Consulta($strConsulta);
    $intContador = $oConecta->Field('cuantos');
    
    // Obtener los elementos de esta página
    $strConsulta = "SELECT * FROM ordenes_trabajo ";
    if($intSoloEstatus) {
      $strConsulta .= "WHERE id_estatus = $intSoloEstatus ";
    }
    $strConsulta .= "ORDER BY id_orden_trabajo DESC ";
    $strConsulta .= "LIMIT " . ($intPagina * 20) . ", 20";
    
    $oConecta->Consulta($strConsulta);
    $strTablaDatos  = "";
    while(!$oConecta->EOF) {
      $strTablaDatos .= "<tr " . Variables::AlternarConClase() . ">";
      $strTablaDatos .= "<td>" . $oConecta->Field('id_orden_trabajo') . "</td>";
      $strTablaDatos .= "<td>" . Variables::GetValueByTable("cat_clientes", "id_cliente", "razon_social", $oConecta->Field('id_cliente')) . "</td>";
      $strTablaDatos .= "<td>" . Variables::GetValueByTable("inventario", "id_inventario", "CONCAT(tipo_monta, ' ', marca, ' ', modelo, ' ', serie, ' ', tipo, ' ', columna1)", $oConecta->Field('id_equipo')) . "</td>";
      $strTablaDatos .= "<td><a href='" . $oConecta->Field('url_pdf') . "'>Ver PDF</a></td>";
      $strTablaDatos .= "<td>";
      if($oConecta->Field('id_estatus') == "1") {
        $strTablaDatos .= "<input type='checkbox' name='cerrar[]' value='" . $oConecta->Field('id_orden_trabajo') . "' />";
      } else {
        $strTablaDatos .= "&nbsp;";
      }
      $strTablaDatos .= "</td>";
      $strTablaDatos .= "<td>" . Variables::GetValueByTable("cat_estatus", "id_estatus", "nombre", $oConecta->Field('id_estatus')) . "</td>";
      $strTablaDatos .= "<td><a href='index.php?option=orden_trabajo&id=" . $oConecta->Field('id_orden_trabajo') . "'>Editar</a></td>";
      
      $strTablaDatos .= "</tr>";
      $oConecta->MoveNext();
    }
    
    eval('$strRes = "' . $oTemplate->Get('lista_ordenes_small.tpl.php') . '";');
    return $strRes;
  }
  
  function ObtenerObjetos() {
    $this->__oCliente = new Cliente($this->intIdCliente);
    $this->__oEquipo  = new Inventario($this->intIdEquipo);
    $this->__oTrabajador = new Trabajador($this->intIdTrabajador);
    for($i = 1; $i < 12; $i++) {
      eval('$this->__arrRefacciones[$i] = new Producto($this->intIdIdRef' . $i . ');');
    }
  }
  
  function Mostrar() {
    if(Variables::GetOption('paso') == "2") {
      $intIdOrdenTrabajo = $this->GuardarAct(Variables::GetOption('id'), Variables::GetOption('datos'), Variables::GetOption('datos_trab'));
      $this->ObtenerPDF($intIdOrdenTrabajo);
      header("Location:index.php?option=abc_ordenes_trabajo"); die; // die("Guardado listo");
    } else {
      $strPagina = $this->ObtenerInfo(Variables::GetOption('id'));
    }
    
    return $strPagina;
  }
  
  function GuardarAct($intIdOrdenTrabajo, $varPostCopy, $arrDatosTrabajosEfectuados) {
    $oOrdenTrabajo = new OrdenTrabajo();
    $oOrdenTrabajo->LlenarObjeto($varPostCopy);
    $oOrdenTrabajo->strTrabajosEfec = serialize($arrDatosTrabajosEfectuados);
    $oOrdenTrabajo->fltManoObra = 0;
    for($i = 0; $i < 10; $i++) {
      $oOrdenTrabajo->fltManoObra += ($arrDatosTrabajosEfectuados["cant"][$i] * $arrDatosTrabajosEfectuados["prec"][$i]);
    }
    $oRefacc  = new Producto();
    for($i = 1; $i < 12; $i++) {
      eval('$intIdRefac = $oOrdenTrabajo->intIdIdRef' . $i . ';');
      if($intIdRefac) {
        $oRefacc->SeleccionarPorIndice($intIdRefac);
        eval('$oOrdenTrabajo->fltPrecRef' . $i . ' = ' . $oRefacc->fltPrecio   . ';');
        eval('$oOrdenTrabajo->fltIVARef'  . $i . ' = ' . $oRefacc->fltImpuesto . ';');
      } else {
        eval('$oOrdenTrabajo->fltPrecRef' . $i . ' = 0;');
        eval('$oOrdenTrabajo->fltIVARef'  . $i . ' = 0;');
      }
    }
    
    $oOrdenTrabajo->GuardarObjeto(true, true);
    
    return $oOrdenTrabajo->intIdOrdenTrabajo;
  }
  
  function ObtenerPDF($intIdOrdenTrabajo, $bolMandarAPantalla = true) {
    $oOrden    = new OrdenTrabajo($intIdOrdenTrabajo);
    $oOrden->ObtenerObjetos();
    $oPDFOrden = new PDF_OrdenTrabajo($oOrden);
    $oPDFOrden->DoRender();
    $strNombreRel = $oPDFOrden->Guardar();
    $oOrden->strUrlPdf = $strNombreRel;
    $oOrden->GuardarObjeto();
    if($bolMandarAPantalla) {
      global $strGPath;
      header('Content-type: application/pdf');
      header('Content-Disposition: attachment; filename="orden_trabajo_' . sprintf("%08d", $oOrden->intIdOrdenTrabajo) . '.pdf"');
      readfile($strGPath . '/' . $oOrden->strUrlPdf);
      die;
    }
  }
  
  function ObtenerInfo($intIdOrdenTrabajo) {
    $oTemplate = new Template();
    
    $intIdOrdenTrabajo -= 0;
    
    $this->SeleccionarPorIndice($intIdOrdenTrabajo);
    
    $oCliente = new Cliente   ($this->intIdCliente   );
    $oEquipo  = new Inventario($this->intIdEquipo    );
    $oTrabaja = new Trabajador($this->intIdTrabajador);
    $oRefacc  = new Producto  ();
    
    $intIdCliente        = $oCliente->intIdCliente   ;
    $strNomCliente       = $oCliente->strRazonSocial ;
    $strAtencionA        = $oCliente->strAtencionA   ;
    $strDireccion        = $oCliente->strDireccion   ;
    $strTelefono         = $oCliente->strTelefono    ;
    $strFax              = $oCliente->strFax         ;
    
    $intIdEquipo         = $oEquipo->intIdInventario ;
    $strEquipo           = $oEquipo->strNoEco        ;
    $strMarca            = $oEquipo->strMarca        ;
    $strModelo           = $oEquipo->strModelo       ;
    $strSerie            = $oEquipo->strSerie        ;
    
    $intIdTrabajador     = $oTrabaja->intIdTrabajador;
    $strTrabajador       = $oTrabaja->strNombre      ;
    
    $strInformando       = $this->strInformando      ;
    $strFecha            = $this->strFecha           ;
    
    $strHoras            = $this->strHoras           ;
    $strFechaPS          = $this->strFechaPS         ;
    
    $strHEntrada         = $this->strHEntrada        ;
    $strHSalida          = $this->strHSalida         ;
    $strFallasDetectadas = $this->strFallasDet       ;
    $strTrabajosEfec     = $this->strTrabajosEfec    ;
    $strRecomendaciones  = $this->strRecomendacion   ;
    
    $intIdEstatus        = $this->intIdEstatus       ;
    if(!$intIdEstatus ) $intIdEstatus  = 1;
    $intIdSucursal       = $this->intIdSucursal      ;
    if(!$intIdSucursal) $intIdSucursal = 1;
    
    $strSelectSucursal = Variables::GetSelectByTable("cat_sucursales", "id_sucursal", "nombre", $intIdSucursal, "datos[id_sucursal]");
    $strSelectEstatus  = Variables::GetSelectByTable("cat_estatus"   , "id_estatus" , "nombre", $intIdEstatus , "datos[id_estatus]" );
    
    $strTablaRefacciones = "";
    $fltRefacciones      = 0;
    
    
    $arrTrabajosEfe = unserialize($strTrabajosEfec);
    $strRowsTrabEfe = "";
    for($i = 0; $i < 10; $i++) {
      $strRowsTrabEfe .= "<tr>";
      $strRowsTrabEfe .= "<td><input type='text' name='datos_trab[cant][]' size='5'  value='{$arrTrabajosEfe["cant"][$i]}' id='trab_ef_cant_{$i}' onblur='CambioMontosTot()' /></td>";
      $strRowsTrabEfe .= "<td><input type='text' name='datos_trab[desc][]' size='50' value='{$arrTrabajosEfe["desc"][$i]}' /></td>";
      $strRowsTrabEfe .= "<td><input type='text' name='datos_trab[prec][]' size='8'  value='{$arrTrabajosEfe["prec"][$i]}' id='trab_ef_prec_{$i}' onblur='CambioMontosTot()' /></td>";
      $strRowsTrabEfe .= "</tr>";
    }
    
    $arrProds[0] = ":: SELECCIONE REFACCION ::";
    $arrProds += Variables::GetArrayByTable("cat_productos", "id_producto", "CONCAT(codigo, ' - ', nombre)", "codigo");
    for($i = 1; $i < 12; $i++) {
      eval('$intCantProd = $this->intCantRef' . $i . ';');
      eval('$intIdProd   = $this->intIdIdRef' . $i . ';');
      eval('$fltPrecio   = $this->fltPrecRef' . $i . ';');
      
      $fltSubTotAct = $fltPrecio * $intCantProd;
      $fltRefacciones += $fltSubTotAct;
      
      $strTablaRefacciones .= "<tr>";
      $strTablaRefacciones .= "<td><input type='text' name='datos[ref_cant_{$i}]' value='$intCantProd' size='5' id='r_cant_{$i}' onblur='CambioMontosTot()' /></td>";
      $strTablaRefacciones .= "<td>";
      $strTablaRefacciones .= Variables::GetSelectByArray($arrProds, $intIdProd, "datos[ref_id_{$i}]", "id='r_prod_{$i}' onchange='CambioMontosTot()'");
      $strTablaRefacciones .= "</td>";
      $strTablaRefacciones .= "<td><div id='r_prec_{$i}'>$fltPrecio</div></td>";
      $strTablaRefacciones .= "<td><div id='r_sub_{$i}'>$fltSubTotAct</div></td>";
      $strTablaRefacciones .= "</tr>";
    }
    
    $strTotRef   = $fltRefacciones   ;
    $strManoObra = $this->fltManoObra;
    $strVarios   = $this->fltVarios  ;
    $strForaneos = $this->fltForaneos;
    $strSubTotal = $strTotRef + $strManoObra + $strVarios + $strForaneos;
    $strIVA      = round($strSubTotal * 0.16, 4);
    $strTotal    = $strSubTotal + $strIVA;
    
    $strJSPrec   = $this->__ObtenerArregloPrecios();
    
    eval('$strPagina = "' . $oTemplate->Get('orden_trabajo_entrada.tpl.php') . '";');
    
    return $strPagina;
  }
  
  function __ObtenerArregloPrecios() {
    $oConecta = new Conecta();
    $strConsulta = "SELECT id_producto, precio FROM cat_productos";
    $oConecta->Consulta($strConsulta);
    $strRet  = "";
    $strRet .= "var arrPrecios = new Array();\n";
    while(!$oConecta->EOF) {
      $strRet .= "arrPrecios[" . $oConecta->Field('id_producto') . "] = " . ($oConecta->Field('precio') - 0) . ";\n";
      $oConecta->MoveNext();
    }
    return $strRet;
  }
}

class FiltroOrdenTrabajo extends Filtro {
  function FiltroOrdenTrabajo() {
    $arrNombresColumnas['id_cliente'       ] = "Cliente"              ;
    $arrNombresColumnas['id_equipo'        ] = "Equipo"               ;
    $arrNombresColumnas['id_trabajador'    ] = "Trabajador"           ;
    $arrNombresColumnas['id_sucursal'      ] = "Sucursal"             ;
    $arrNombresColumnas['id_estatus'       ] = "Estatus"              ;
    $arrNombresColumnas['informando'       ] = "Informando"           ;
    $arrNombresColumnas['fecha'            ] = "Fecha"                ;
    $arrNombresColumnas['horas'            ] = "Horas"                ;
    $arrNombresColumnas['fecha_ps'         ] = "Fecha Puesta Servicio";
    $arrNombresColumnas['h_entrada'        ] = "H Entrada"            ;
    $arrNombresColumnas['h_salida'         ] = "H Salida"             ;
    $arrNombresColumnas['fallas_detectadas'] = "Fallas Detectadas"    ;
    $arrNombresColumnas['trabajos_efec'    ] = "Trabajos Efectuados"  ;
    $arrNombresColumnas['recomendaciones'  ] = "Recomendaciones"      ;
    
    $arrNombresColumnas['ref_id_1'         ] = "Refaccion 1"          ;
    $arrNombresColumnas['ref_cant_1'       ] = "Cantidad 1"           ;
    $arrNombresColumnas['ref_prec_1'       ] = "Precio 1"             ;
    $arrNombresColumnas['ref_iva_1'        ] = "IVA 1"                ;
    $arrNombresColumnas['ref_id_2'         ] = "Refaccion 2"          ;
    $arrNombresColumnas['ref_cant_2'       ] = "Cantidad 2"           ;
    $arrNombresColumnas['ref_prec_2'       ] = "Precio 2"             ;
    $arrNombresColumnas['ref_iva_2'        ] = "IVA 2"                ;
    $arrNombresColumnas['ref_id_3'         ] = "Refaccion 3"          ;
    $arrNombresColumnas['ref_cant_3'       ] = "Cantidad 3"           ;
    $arrNombresColumnas['ref_prec_3'       ] = "Precio 3"             ;
    $arrNombresColumnas['ref_iva_3'        ] = "IVA 3"                ;
    $arrNombresColumnas['ref_id_4'         ] = "Refaccion 4"          ;
    $arrNombresColumnas['ref_cant_4'       ] = "Cantidad 4"           ;
    $arrNombresColumnas['ref_prec_4'       ] = "Precio 4"             ;
    $arrNombresColumnas['ref_iva_4'        ] = "IVA 4"                ;
    $arrNombresColumnas['ref_id_5'         ] = "Refaccion 5"          ;
    $arrNombresColumnas['ref_cant_5'       ] = "Cantidad 5"           ;
    $arrNombresColumnas['ref_prec_5'       ] = "Precio 5"             ;
    $arrNombresColumnas['ref_iva_5'        ] = "IVA 5"                ;
    $arrNombresColumnas['ref_id_6'         ] = "Refaccion 6"          ;
    $arrNombresColumnas['ref_cant_6'       ] = "Cantidad 6"           ;
    $arrNombresColumnas['ref_prec_6'       ] = "Precio 6"             ;
    $arrNombresColumnas['ref_iva_6'        ] = "IVA 6"                ;
    $arrNombresColumnas['ref_id_7'         ] = "Refaccion 7"          ;
    $arrNombresColumnas['ref_cant_7'       ] = "Cantidad 7"           ;
    $arrNombresColumnas['ref_prec_7'       ] = "Precio 7"             ;
    $arrNombresColumnas['ref_iva_7'        ] = "IVA 7"                ;
    $arrNombresColumnas['ref_id_8'         ] = "Refaccion 8"          ;
    $arrNombresColumnas['ref_cant_8'       ] = "Cantidad 8"           ;
    $arrNombresColumnas['ref_prec_8'       ] = "Precio 8"             ;
    $arrNombresColumnas['ref_iva_8'        ] = "IVA 8"                ;
    $arrNombresColumnas['ref_id_9'         ] = "Refaccion 9"          ;
    $arrNombresColumnas['ref_cant_9'       ] = "Cantidad 9"           ;
    $arrNombresColumnas['ref_prec_9'       ] = "Precio 9"             ;
    $arrNombresColumnas['ref_iva_9'        ] = "IVA 9"                ;
    $arrNombresColumnas['ref_id_10'        ] = "Refaccion 10"         ;
    $arrNombresColumnas['ref_cant_10'      ] = "Cantidad 10"          ;
    $arrNombresColumnas['ref_prec_10'      ] = "Precio 10"            ;
    $arrNombresColumnas['ref_iva_10'       ] = "IVA 10"               ;
    $arrNombresColumnas['ref_id_11'        ] = "Refaccion 11"         ;
    $arrNombresColumnas['ref_cant_11'      ] = "Cantidad 11"          ;
    $arrNombresColumnas['ref_prec_11'      ] = "Precio 11"            ;
    $arrNombresColumnas['ref_iva_11'       ] = "IVA 11"               ;
    
    $arrNombresColumnas['mano_obra'        ] = "Mano Obra"            ;
    $arrNombresColumnas['varios'           ] = "Varios"               ;
    $arrNombresColumnas['foraneos'         ] = "Foraneos"             ;
    
    $arrReferencias['id_estatus'   ]["tabla"]["nombre"] = "cat_estatus";
    $arrReferencias['id_estatus'   ]["tabla"]["indice"] = "id_estatus" ;
    $arrReferencias['id_estatus'   ]["tabla"]["desc"  ] = "nombre"     ;
    $arrReferencias['id_sucursal'  ]["tabla"]["nombre"] = "cat_sucursales";
    $arrReferencias['id_sucursal'  ]["tabla"]["indice"] = "id_sucursal"   ;
    $arrReferencias['id_sucursal'  ]["tabla"]["desc"  ] = "nombre"        ;
    
    $arrReferencias['id_cliente'   ]["tabla"]["nombre"] = "cat_clientes";
    $arrReferencias['id_cliente'   ]["tabla"]["indice"] = "id_cliente"  ;
    $arrReferencias['id_cliente'   ]["tabla"]["desc"  ] = "razon_social";
    $arrReferencias['id_equipo'    ]["tabla"]["nombre"] = "inventario";
    $arrReferencias['id_equipo'    ]["tabla"]["indice"] = "id_inventario"  ;
    $arrReferencias['id_equipo'    ]["tabla"]["desc"  ] = "CONCAT(no_eco, ' ', marca, ' ', modelo, ' ', serie, ' ', tipo)";
    $arrReferencias['id_trabajador']["tabla"]["nombre"] = "cat_trabajadores";
    $arrReferencias['id_trabajador']["tabla"]["indice"] = "id_trabajador"  ;
    $arrReferencias['id_trabajador']["tabla"]["desc"  ] = "nombre";
    
    $arrReferencias['ref_id_1'     ]["tabla"]["nombre"] = "cat_productos";
    $arrReferencias['ref_id_1'     ]["tabla"]["indice"] = "id_producto"  ;
    $arrReferencias['ref_id_1'     ]["tabla"]["desc"  ] = "CONCAT(codigo, ' ', nombre)";
    $arrReferencias['ref_id_2'     ]["tabla"]["nombre"] = "cat_productos";
    $arrReferencias['ref_id_2'     ]["tabla"]["indice"] = "id_producto"  ;
    $arrReferencias['ref_id_2'     ]["tabla"]["desc"  ] = "CONCAT(codigo, ' ', nombre)";
    $arrReferencias['ref_id_3'     ]["tabla"]["nombre"] = "cat_productos";
    $arrReferencias['ref_id_3'     ]["tabla"]["indice"] = "id_producto"  ;
    $arrReferencias['ref_id_3'     ]["tabla"]["desc"  ] = "CONCAT(codigo, ' ', nombre)";
    $arrReferencias['ref_id_4'     ]["tabla"]["nombre"] = "cat_productos";
    $arrReferencias['ref_id_4'     ]["tabla"]["indice"] = "id_producto"  ;
    $arrReferencias['ref_id_4'     ]["tabla"]["desc"  ] = "CONCAT(codigo, ' ', nombre)";
    $arrReferencias['ref_id_5'     ]["tabla"]["nombre"] = "cat_productos";
    $arrReferencias['ref_id_5'     ]["tabla"]["indice"] = "id_producto"  ;
    $arrReferencias['ref_id_5'     ]["tabla"]["desc"  ] = "CONCAT(codigo, ' ', nombre)";
    $arrReferencias['ref_id_6'     ]["tabla"]["nombre"] = "cat_productos";
    $arrReferencias['ref_id_6'     ]["tabla"]["indice"] = "id_producto"  ;
    $arrReferencias['ref_id_6'     ]["tabla"]["desc"  ] = "CONCAT(codigo, ' ', nombre)";
    $arrReferencias['ref_id_7'     ]["tabla"]["nombre"] = "cat_productos";
    $arrReferencias['ref_id_7'     ]["tabla"]["indice"] = "id_producto"  ;
    $arrReferencias['ref_id_7'     ]["tabla"]["desc"  ] = "CONCAT(codigo, ' ', nombre)";
    $arrReferencias['ref_id_8'     ]["tabla"]["nombre"] = "cat_productos";
    $arrReferencias['ref_id_8'     ]["tabla"]["indice"] = "id_producto"  ;
    $arrReferencias['ref_id_8'     ]["tabla"]["desc"  ] = "CONCAT(codigo, ' ', nombre)";
    $arrReferencias['ref_id_9'     ]["tabla"]["nombre"] = "cat_productos";
    $arrReferencias['ref_id_9'     ]["tabla"]["indice"] = "id_producto"  ;
    $arrReferencias['ref_id_9'     ]["tabla"]["desc"  ] = "CONCAT(codigo, ' ', nombre)";
    $arrReferencias['ref_id_10'    ]["tabla"]["nombre"] = "cat_productos";
    $arrReferencias['ref_id_10'    ]["tabla"]["indice"] = "id_producto"  ;
    $arrReferencias['ref_id_10'    ]["tabla"]["desc"  ] = "CONCAT(codigo, ' ', nombre)";
    $arrReferencias['ref_id_11'    ]["tabla"]["nombre"] = "cat_productos";
    $arrReferencias['ref_id_11'    ]["tabla"]["indice"] = "id_producto"  ;
    $arrReferencias['ref_id_11'    ]["tabla"]["desc"  ] = "CONCAT(codigo, ' ', nombre)";
    
    parent::CrearFiltro("ordenes_trabajo", "id_orden_trabajo", $arrNombresColumnas, "Busqueda", "", "", "OrdenTrabajo", $arrReferencias);
  }
}

class ABC_OrdenTrabajo extends ABC_Base {
  function ABC_OrdenTrabajo() {
    $strClaseBase     = "OrdenTrabajo"          ;
    $strClaseFiltro   = "FiltroOrdenTrabajo"    ;
    $strClaseCarga    = "" ;
    $strCampoMostrar  = "fecha,id_orden_trabajo";
    $strOpcionListado = "abc_ordenes_trabajo"   ;
    $strOpcionGuardar = "abc_ordenes_trabajo"   ;

    $arrNombresColumnas = array();
    $arrNombresColumnas['id_cliente'       ] = "Cliente"              ;
    $arrNombresColumnas['id_equipo'        ] = "Equipo"               ;
    $arrNombresColumnas['id_trabajador'    ] = "Trabajador"           ;
    $arrNombresColumnas['id_sucursal'      ] = "Sucursal"             ;
    $arrNombresColumnas['id_estatus'       ] = "Estatus"              ;
    $arrNombresColumnas['informando'       ] = "Informando"           ;
    $arrNombresColumnas['fecha'            ] = "Fecha"                ;
    $arrNombresColumnas['horas'            ] = "Horas"                ;
    $arrNombresColumnas['fecha_ps'         ] = "Fecha Puesta Servicio";
    $arrNombresColumnas['h_entrada'        ] = "H Entrada"            ;
    $arrNombresColumnas['h_salida'         ] = "H Salida"             ;
    $arrNombresColumnas['fallas_detectadas'] = "Fallas Detectadas"    ;
    $arrNombresColumnas['trabajos_efec'    ] = "Trabajos Efectuados"  ;
    $arrNombresColumnas['recomendaciones'  ] = "Recomendaciones"      ;
    
    $arrNombresColumnas['ref_id_1'         ] = "Refaccion 1"          ;
    $arrNombresColumnas['ref_cant_1'       ] = "Cantidad 1"           ;
    $arrNombresColumnas['ref_prec_1'       ] = "Precio 1"             ;
    $arrNombresColumnas['ref_iva_1'        ] = "IVA 1"                ;
    $arrNombresColumnas['ref_id_2'         ] = "Refaccion 2"          ;
    $arrNombresColumnas['ref_cant_2'       ] = "Cantidad 2"           ;
    $arrNombresColumnas['ref_prec_2'       ] = "Precio 2"             ;
    $arrNombresColumnas['ref_iva_2'        ] = "IVA 2"                ;
    $arrNombresColumnas['ref_id_3'         ] = "Refaccion 3"          ;
    $arrNombresColumnas['ref_cant_3'       ] = "Cantidad 3"           ;
    $arrNombresColumnas['ref_prec_3'       ] = "Precio 3"             ;
    $arrNombresColumnas['ref_iva_3'        ] = "IVA 3"                ;
    $arrNombresColumnas['ref_id_4'         ] = "Refaccion 4"          ;
    $arrNombresColumnas['ref_cant_4'       ] = "Cantidad 4"           ;
    $arrNombresColumnas['ref_prec_4'       ] = "Precio 4"             ;
    $arrNombresColumnas['ref_iva_4'        ] = "IVA 4"                ;
    $arrNombresColumnas['ref_id_5'         ] = "Refaccion 5"          ;
    $arrNombresColumnas['ref_cant_5'       ] = "Cantidad 5"           ;
    $arrNombresColumnas['ref_prec_5'       ] = "Precio 5"             ;
    $arrNombresColumnas['ref_iva_5'        ] = "IVA 5"                ;
    $arrNombresColumnas['ref_id_6'         ] = "Refaccion 6"          ;
    $arrNombresColumnas['ref_cant_6'       ] = "Cantidad 6"           ;
    $arrNombresColumnas['ref_prec_6'       ] = "Precio 6"             ;
    $arrNombresColumnas['ref_iva_6'        ] = "IVA 6"                ;
    $arrNombresColumnas['ref_id_7'         ] = "Refaccion 7"          ;
    $arrNombresColumnas['ref_cant_7'       ] = "Cantidad 7"           ;
    $arrNombresColumnas['ref_prec_7'       ] = "Precio 7"             ;
    $arrNombresColumnas['ref_iva_7'        ] = "IVA 7"                ;
    $arrNombresColumnas['ref_id_8'         ] = "Refaccion 8"          ;
    $arrNombresColumnas['ref_cant_8'       ] = "Cantidad 8"           ;
    $arrNombresColumnas['ref_prec_8'       ] = "Precio 8"             ;
    $arrNombresColumnas['ref_iva_8'        ] = "IVA 8"                ;
    $arrNombresColumnas['ref_id_9'         ] = "Refaccion 9"          ;
    $arrNombresColumnas['ref_cant_9'       ] = "Cantidad 9"           ;
    $arrNombresColumnas['ref_prec_9'       ] = "Precio 9"             ;
    $arrNombresColumnas['ref_iva_9'        ] = "IVA 9"                ;
    $arrNombresColumnas['ref_id_10'        ] = "Refaccion 10"         ;
    $arrNombresColumnas['ref_cant_10'      ] = "Cantidad 10"          ;
    $arrNombresColumnas['ref_prec_10'      ] = "Precio 10"            ;
    $arrNombresColumnas['ref_iva_10'       ] = "IVA 10"               ;
    $arrNombresColumnas['ref_id_11'        ] = "Refaccion 11"         ;
    $arrNombresColumnas['ref_cant_11'      ] = "Cantidad 11"          ;
    $arrNombresColumnas['ref_prec_11'      ] = "Precio 11"            ;
    $arrNombresColumnas['ref_iva_11'       ] = "IVA 11"               ;
    
    $arrNombresColumnas['mano_obra'        ] = "Mano Obra"            ;
    $arrNombresColumnas['varios'           ] = "Varios"               ;
    $arrNombresColumnas['foraneos'         ] = "Foraneos"             ;
    
    $arrNombresColumnas['url_pdf'          ] = "PDF"                  ;

    $arrReferencias = array();
    $arrReferencias['id_estatus'   ]["tabla"]["nombre"] = "cat_estatus";
    $arrReferencias['id_estatus'   ]["tabla"]["indice"] = "id_estatus" ;
    $arrReferencias['id_estatus'   ]["tabla"]["desc"  ] = "nombre"     ;
    $arrReferencias['id_sucursal'  ]["tabla"]["nombre"] = "cat_sucursales";
    $arrReferencias['id_sucursal'  ]["tabla"]["indice"] = "id_sucursal"   ;
    $arrReferencias['id_sucursal'  ]["tabla"]["desc"  ] = "nombre"        ;
    
    $arrReferencias['id_cliente'   ]["tabla"]["nombre"] = "cat_clientes";
    $arrReferencias['id_cliente'   ]["tabla"]["indice"] = "id_cliente"  ;
    $arrReferencias['id_cliente'   ]["tabla"]["desc"  ] = "razon_social";
    $arrReferencias['id_equipo'    ]["tabla"]["nombre"] = "inventario";
    $arrReferencias['id_equipo'    ]["tabla"]["indice"] = "id_inventario"  ;
    $arrReferencias['id_equipo'    ]["tabla"]["desc"  ] = "CONCAT(no_eco, ' ', marca, ' ', modelo, ' ', serie, ' ', tipo)";
    $arrReferencias['id_trabajador']["tabla"]["nombre"] = "cat_trabajadores";
    $arrReferencias['id_trabajador']["tabla"]["indice"] = "id_trabajador"  ;
    $arrReferencias['id_trabajador']["tabla"]["desc"  ] = "nombre";
    
    $arrReferencias['ref_id_1'     ]["tabla"]["nombre"] = "cat_productos";
    $arrReferencias['ref_id_1'     ]["tabla"]["indice"] = "id_producto"  ;
    $arrReferencias['ref_id_1'     ]["tabla"]["desc"  ] = "CONCAT(codigo, ' ', nombre)";
    $arrReferencias['ref_id_2'     ]["tabla"]["nombre"] = "cat_productos";
    $arrReferencias['ref_id_2'     ]["tabla"]["indice"] = "id_producto"  ;
    $arrReferencias['ref_id_2'     ]["tabla"]["desc"  ] = "CONCAT(codigo, ' ', nombre)";
    $arrReferencias['ref_id_3'     ]["tabla"]["nombre"] = "cat_productos";
    $arrReferencias['ref_id_3'     ]["tabla"]["indice"] = "id_producto"  ;
    $arrReferencias['ref_id_3'     ]["tabla"]["desc"  ] = "CONCAT(codigo, ' ', nombre)";
    $arrReferencias['ref_id_4'     ]["tabla"]["nombre"] = "cat_productos";
    $arrReferencias['ref_id_4'     ]["tabla"]["indice"] = "id_producto"  ;
    $arrReferencias['ref_id_4'     ]["tabla"]["desc"  ] = "CONCAT(codigo, ' ', nombre)";
    $arrReferencias['ref_id_5'     ]["tabla"]["nombre"] = "cat_productos";
    $arrReferencias['ref_id_5'     ]["tabla"]["indice"] = "id_producto"  ;
    $arrReferencias['ref_id_5'     ]["tabla"]["desc"  ] = "CONCAT(codigo, ' ', nombre)";
    $arrReferencias['ref_id_6'     ]["tabla"]["nombre"] = "cat_productos";
    $arrReferencias['ref_id_6'     ]["tabla"]["indice"] = "id_producto"  ;
    $arrReferencias['ref_id_6'     ]["tabla"]["desc"  ] = "CONCAT(codigo, ' ', nombre)";
    $arrReferencias['ref_id_7'     ]["tabla"]["nombre"] = "cat_productos";
    $arrReferencias['ref_id_7'     ]["tabla"]["indice"] = "id_producto"  ;
    $arrReferencias['ref_id_7'     ]["tabla"]["desc"  ] = "CONCAT(codigo, ' ', nombre)";
    $arrReferencias['ref_id_8'     ]["tabla"]["nombre"] = "cat_productos";
    $arrReferencias['ref_id_8'     ]["tabla"]["indice"] = "id_producto"  ;
    $arrReferencias['ref_id_8'     ]["tabla"]["desc"  ] = "CONCAT(codigo, ' ', nombre)";
    $arrReferencias['ref_id_9'     ]["tabla"]["nombre"] = "cat_productos";
    $arrReferencias['ref_id_9'     ]["tabla"]["indice"] = "id_producto"  ;
    $arrReferencias['ref_id_9'     ]["tabla"]["desc"  ] = "CONCAT(codigo, ' ', nombre)";
    $arrReferencias['ref_id_10'    ]["tabla"]["nombre"] = "cat_productos";
    $arrReferencias['ref_id_10'    ]["tabla"]["indice"] = "id_producto"  ;
    $arrReferencias['ref_id_10'    ]["tabla"]["desc"  ] = "CONCAT(codigo, ' ', nombre)";
    $arrReferencias['ref_id_11'    ]["tabla"]["nombre"] = "cat_productos";
    $arrReferencias['ref_id_11'    ]["tabla"]["indice"] = "id_producto"  ;
    $arrReferencias['ref_id_11'    ]["tabla"]["desc"  ] = "CONCAT(codigo, ' ', nombre)";
    
    $arrReferencias['url_pdf'      ]["tipos"] = "U";
    
    $this->Inicializar($strClaseBase, $arrNombresColumnas, $strOpcionListado, $strOpcionGuardar, $strCampoMostrar, $strClaseFiltro, $arrReferencias, "", $strClaseCarga);
    
    $this->arrPlugIns["Locales"][]    = "Plugin_OrdenTrabajo_MuestraLigaEdicion";
    $this->arrPlugIns["Locales"][]    = "Plugin_OrdenTrabajo_CambioEstatus2";
    
    $this->bolABCLista                = true;
    $this->bolABCListaOcultarTD       = true;
    $this->bolPosibleNuevoElemento    = false;
    $this->intTipoGuardado            = 1;
    $this->intNumeroRes               = 20;
    $this->bolSoloLectura             = true;
    $this->bolPosibleExportarExcel    = true;
    $this->bolPluginsLocalesIzquierda = true;
  }
}

?>
